package test;

import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;

public class if_then_else_switch_case_conditionals {
	/*******************************************************************************
	 * Software: if_then_else_switch_case_conditionals.java
	 * Version:  1.0
	 * Date:     Jan 6, 2010 3:44:25 PM
	 * License:  none specified yet.
	 *
	 * PURPOSE:
	 * REQUIREMENTS WHAT ELSE IS NEEDED:
	 * TODO:
	 * FEATURES:
	 *******************************************************************************/

	public if_then_else_switch_case_conditionals() {

	}

	/** **/

	public static void main(String[] args) {

		/** Beispiel Der Plus-Operator für Zeichenketten geht streng von links nach rechts und bereitet mit
		 * eingebetteten arithmetischen Ausdrücken mitunter Probleme. Eine Klammerung hilft,
		 * wie im Folgenden zu sehen ist:
		 */
		System.out.println( "Ist 1 größer als 2? " + (1 > 2 ? "ja" : "nein") );

		/** Beispiel Ein relationaler Vergleich, ob der Inhalt der Variablen age gleich 14 ist: **/
		int age = 14;
		if( age == 14 )
		{
			System.out.println( "Durchschnittlich 15.000 Gewaltakte im TV gesehen." );
		}
		else if(age < 14)
		{
			System.out.println( "Weniger als 15.000 Gewaltakte im TV gesehen." );
		}
		else if(age > 14)
		{
			System.out.println( "Noch mehr als 15.000 Gewaltakte im TV gesehen." );
		}
		
		/** Eine Kurzform für speziell gebaute, angehäufte if-Anweisungen bietet switch.
		 * Im switch-Block gibt es eine Reihe von unterschiedlichen Sprungzielen,
		 * die mit case markiert sind. Ein einfacher Taschenrechner für vier binäre Operatoren ist mit switch schnell implementiert:
		 * 
		 * VOLL ÄTZEND! Strings sind in switch-case anweisungen in java nicht erlaubt.
		 * "da Switch-Anweisungen prinzipiell nur bei Zahlenbehandlungen effizient sind.
		 * Alle anderen Datentypen, Objekte etc. behandelt man in Java gesondert."
		 * (Quelle: http://powerforen.de/forum/showthread.php?t=191525)
		 */

		char operator=javax.swing.JOptionPane.showInputDialog("Operator").charAt(0); 
		double x=Double.parseDouble(javax.swing.JOptionPane.showInputDialog("erste Zahl")); 
		double y=Double.parseDouble(javax.swing.JOptionPane.showInputDialog("zweite Zahl")); 

		switch ( operator ) 
		{ 
		  case 'p': 
		    System.out.println( x + y ); 
		    break; 
		  case '-': 
		    System.out.println( x - y ); 
		    break;
		  case '*': 
		    System.out.println( x * y ); 
		    break; 
		  case '/': 
		    System.out.println( x / y ); 
		    break; 
		  default: 
			  System.err.println( "Unknown operator " + operator );
		}		

		/**
			Über dieses Durchfallen ist es möglich, bei unterschiedlichen Werten immer die gleiche Anweisung ausführen zu lassen:
			Listing 2.11 VowelTest.java, main()
			char charToTestIfVowel = 'u'; 
		**/
		char charToTestIfVowel=javax.swing.JOptionPane.showInputDialog("Bitte geben Sie einen Vokal ein:").charAt(0);
		
		switch ( charToTestIfVowel ) 
		{ 
			case 'a': // fall through 
			case 'e': 
			case 'i': 
			case 'o': 
			case 'u': 
				System.out.println( charToTestIfVowel + " is vowel" ); 
				break; 
			default: 
				System.out.println( charToTestIfVowel + " is no vowel" ); 
		}

	
	}
}
